#include "client_Cliente.h"

void Cliente::Conectarse(const std::string& IP,const std::string& Po )
{
    std::stringstream ssa(Po);
    short PUERTO;
    ssa >> PUERTO;
    //ojo:no elegimos puerto local, de eso se encarga el kernell
    //ademas, esa infor se la envia al otro
    struct sockaddr_in AddrDestino;

    AddrDestino.sin_family = AF_INET;

    AddrDestino.sin_port = htons(PUERTO);

    long ret = inet_addr( IP.c_str() );

    if ( ret == -1 )
    {
        //std::cerr << "No se pudo traducir IP." << std::endl;
        throw MyException("No se puede traducir IP" + std::string(strerror(errno)));
        //return TRAGIC_ERROR ;
    }

    AddrDestino.sin_addr.s_addr = ret ;

    memset(&(AddrDestino.sin_zero) ,'\0', 8 );
    //bloqueante
    int OtroSock = connect( this->NumSocket
                        ,(struct sockaddr*)&AddrDestino
                        , sizeof(struct sockaddr) );
    if ( OtroSock == -1 )
    {
        //std::cerr << "No se pudo establecer la conexion.Check errno" << std::endl;
        throw MyException("No se puedo establecer la conexion." + std::string(strerror(errno)));
        //return NOT_CONECTED;
    }

    this->ElOtroSocket = OtroSock;

    //return 0;
}

void Cliente::run(){}
